package cn.heyige.backend.service;

import cn.heyige.backend.dto.DivinationResult;

import java.util.List;
import java.util.Set;

/**
 * 缓存服务接口 - 精简版
 *
 * 专注于核心缓存管理功能，提高系统性能和可维护性
 *
 * @author CodeBuddy
 */
public interface CacheService {
    
    /**
     * 缓存占卜结果
     *
     * @param key 缓存键
     * @param result 占卜结果
     * @param timeout 过期时间（秒）
     */
    void cacheDivinationResult(String key, DivinationResult result, long timeout);
    
    /**
     * 获取缓存的占卜结果
     *
     * @param key 缓存键
     * @return 占卜结果
     */
    DivinationResult getDivinationResult(String key);
    
    /**
     * 删除缓存
     *
     * @param key 缓存键
     */
    void evictCache(String key);
    
    /**
     * 批量删除缓存
     *
     * @param keys 缓存键集合
     */
    void evictCaches(Set<String> keys);
    
    /**
     * 检查缓存是否存在
     *
     * @param key 缓存键
     * @return 是否存在
     */
    boolean hasKey(String key);
    
    /**
     * 设置缓存过期时间
     *
     * @param key 缓存键
     * @param timeout 过期时间（秒）
     * @return 是否设置成功
     */
    boolean expire(String key, long timeout);
    
    /**
     * 获取缓存过期时间
     *
     * @param key 缓存键
     * @return 过期时间（秒）
     */
    long getExpire(String key);
}